0 REM GRAFSTAR.DEMO BY DAVE MOORMAN 1 REM MAKE ROOM FOR TOOLS 9A00 2 POKE55,0:POKE56,154:CLR 3 REM SET DEVICE 5 DV=PEEK(186):IFDV<8THENDV=8 9 REM HI IS FOR GRAFSTAR C000. POKE DISABLES IRQ BEFORE LOAD 10 HI=192:POKEHI*256+63,0 19 REM MEMORIZE THIS BLOAD ROUTINE! 20 SYS57812"GRAFSTAR C000",DV,0:POKE780,0:POKE781,0:POKE782,HI:SYS65493 22 REM GRAFSTAR SYSIES AS NAMES 23 OP=HI*256 :REM OPEN 24 MODE=OP+3 :REM MODE 25 PLOT=OP+6 :REM PLOT 26 LINE=OP+9 :REM LINE 27 POIN=OP+12:REM POINT 28 CLIP=OP+15:REM CLIP 29 OFST=OP+18:REM OFFSET 30 YREV=OP+21:REM Y-REVERSE 31 FLIP=OP+24:REM IRQ FLIPPER 32 FILL=OP+27:REM FILL 33 PENC=OP+30:REM PENCOLOR 34 : 49 REM BLOAD TOOLS 9A00 50 SYS57812"TOOLS 9A00",DV,0:POKE780,0 51 POKE781,0:POKE782,154:SYS65493 52 REM TOOLS 9A00 SYSIES AS NAMES 53 MU=154*256 :REM MENU 54 BOX=MU+3 :REM BOX 55 SHADE=MU+39 :REM SHADE 56 SS=MU+6 :REM SCREEN STASH 57 SR=MU+9 :REM SCREEN RESTORE 58 PA=MU+15 :REM PRINT AT 59 CT=MU+18 :REM PRINT CENTER 60 BRANCH=MU+45 :REM BRANCH 61 : 98 :::::::::::::::::::::::::::::::::: 99 REM DEMO SCREEN AND MENU 100 PRINT"[147]":POKE53281,0:POKE53280,0:POKE53272,22:POKE53265,11 110 SYSBOX,0,39,0,24,102,15 119 REM WINDOZE ROUTINE AT 20000. X=-1 MEANS CENTER BOX 120 X=-1:Y=2:M=2:C=7:M$(1)="[215]ELCOME TO" 130 M$(2)="[199] [210] [193] [198] [211] [212] [193] [210] [196] [197] [205] [207]" 140 GOSUB20000 148 : 149 REM WINDOZE ROUTINE AT 20000. X IS REAL COLUMN 150 X=3:Y=8:M=4:C=1 151 M$(1)="[213]SE THE MENU TO CHOOSE VARIOUS 152 M$(2)[178]"EFFECTS. (null)IST THE PROGRAM 153 M$(3)="FOR DETAILED REMARKS. [200]AVE 154 M$(4)[178]"ASC(null)(null) WITH CHR$RAF(null)TAR! STR$ (null)OORMAN 155 GOSUB20000 159 REM WINDOZE ROUTINE AT 20000 160 X=12:Y=16:M=6:C=14 161 M$(1)="[195]RAZY [195]IRCLES" 162 M$(2)="[205]OIRE [208]ATTERNS" 163 M$(3)="[198]AST [198]ILL" 164 M$(4)="[208]OLYGON [206]UTS" 165 M$(5)="[204]IST [208]ROGRAM" 166 M$(6)="[197]XIT [199]RAF[211]TAR" 167 GOSUB20000:POKE53265,27 169 REM MENU 170 SYSMU,Y+1,XX+2,XX+WD-1,6,14,1,0 180 ONF%GOSUB1000,2000,3000,4000,5000,61000 190 GOTO100 998 ::::::::::::::::::::::::::::::::: 999 REM CRAZY CIRCLES 1000 SYS OP,224,204 :REM SET MAPS 1009 REM SWITCH ON HIGH-RES WITH CLEAR 1010 SYS MODE,5 1014 REM SET CLIP TO WHOLE SCREEN 1015 SYS CLIP, 0, 320, 0, 200 1019 REM FOR 10 TIMES: 1020 FORY=1TO10 1029 REM FIND RANDOM CENTERS FOR CIRCLE 1030 CX=RND(1)*320 1040 CY=RND(1)*200 1049 REM FIND RANDOM X / Y RADII 1050 X1=RND(1)*160 1060 Y1=RND(1)*100 1064 REM CHOOSE RANDOM COLOR 1065 C=RND(1)*15+1 1069 REM SET OFFSET TO CENTER CIRCLE 1070 SYS OFST, CX, CY 1079 REM PLOT FIRST POINT ON CIRCLE 1080 SYS PLOT, SIN(0)*X1, COS(0)*Y1, 1 1085 SYS PENC,0,C,0,0 1089 REM THEN DRAW LINES AROUND CIRCLE 1090 FORX=.3 TO (null)*2+.3 STEP .3 1100 SYS LINE, SIN(X)*X1, COS(X)*Y1, 1 1110 NEXT: NEXT 1114 REM RETURN OFFSET TO NORMAL 1115 SYS OFST, 0, 0 1116 SYS FILL, 160, 100, 1 1119 REM ROUTINE FINISHED 1120 POKE53280,12 1129 REM WAIT FOR KEYSTROKE 1130 POKE198,0:WAIT198,1:POKE198,0 1139 REM AND GO BACK TO MENU 1140 PRINT"[147]":SYS MODE, 0 1150 RETURN 1998 ::::::::::::::::::::::::::::::: 1999 REM MOIRE PATTERN SET BITMAP/COLORMAP LOCATION 2000 SYS OP, 224, 204 2009 REM SWITCH TO MULTI-COLOR. CLEAR 2010 SYS MODE, 7 2019 REM SET UP WINDOW CLIP LIMITS 2020 X1=40:X2=110:Y1=25:Y2=125 2029 REM SET CENTER FOR MORAY 2030 CX=90:CY=60 2039 REM DRAW OBJECT 2040 SYS CLIP, X1, X2, Y1, Y2 2049 REM SET OFFSET TO CENTER OF MOIRE 2050 SYS OFST, CX, CY 2059 REM CHOOSE PEN COLORS 2060 SYS PENC, 0, 1, 7, 3 2064 REM AND CHOOSE PEN NUMBER 2065 P=0 2069 REM FOR 10 TIMES 2070 FORY=1TO10 2074 REM INCREASE AND ROLLOVER PEN # 2075 P=(P+1)AND3 2079 REM GOING AROUND THE CIRCLE 2080 FORX=0 TO (null)*2 STEP .1 2089 REM PLOT THE CENTER 2090 SYS PLOT, 0, 0, P 2099 REM AND LINE TO CIRCUMFERENCE 2100 SYS LINE, SIN(X)*100, COS(X)*100,P 2110 NEXT 2119 REM MOVE WINDOW AND MOIRE CENTER 2120 X1=X1+3:X2=X2+3:Y1=Y1+2:Y2=Y2+2 2130 CX=CX-3: CY=CY+2 2139 REM CHANGE MOIRE CENTER 2140 SYS OFST, CX, CY 2149 REM CHANGE WINDOW LOCATION 2150 SYS CLIP, X1, X2, Y1, Y2 2160 NEXT 2169 REM ROUTINE OVER 2170 POKE53280,12 2180 POKE198,0:WAIT198,1:POKE198,0 2190 PRINT"[147]":SYS MODE, 0 2200 RETURN 2998 ::::::::::::::::::::::::::::::: 2999 REM FAST FILL ROUTINE SET BITMAP/COLORMAP MEMORY 3000 SYS OP, 224, 204 3009 REM SWITCH TO MULTI-COLOR/ CLEAR 3010 SYS MODE, 7 3019 REM SET OFFSET TO NORMAL 3020 SYS OFST, 0, 0 3024 REM SET PEN COLORS 3025 SYS PENC, 0, 1, 2, 3 3029 REM SET CLIPING TO WHOLE SCREEN 3030 SYS CL, 0, 160, 0, 200 3039 REM DRAW OBJECT 3040 :SYS PLOT, 0, 0, 1 3050 :SYS LINE, 159, 0, 1 3060 :SYS LINE, 159, 199, 1 3070 :SYS LINE, 0, 199, 1 3080 :SYS LINE, 0, 0, 1 3090 :SYS PLOT, 10, 10, 2 3100 :FORX=10 TO 140 STEP 20 3110 :SYS LINE, X, 40, 2 3120 :SYS LINE, X+10, 40, 2 3130 :SYS LINE, X+10, 10, 2 3140 :SYS LINE, X+20, 10, 2 3150 :NEXT 3160 :SYS LINE, X, 100, 2 3170 :SYS LINE, 70, 150, 2 3180 :SYS LINE, 50, 50, 2 3190 :SYS LINE, 70, 45, 2 3200 :SYS LINE, 50, 45, 2 3210 :SYS LINE, 70, 50, 2 3220 :SYS LINE, 40,90, 2 3230 :SYS LINE, 10, 100, 2 3240 :SYS LINE, 5, 10, 2 3250 :SYS LINE, 10, 10, 2 3260 :SYS FILL, 100, 80, 3 3270 SYS PENC, 0, 7, 2, 3 3279 REM FILL MIDDLE AREA 3280 SYS FILL, 55, 55, 1 3289 REM DRAW CIRCLE 3290 SYS OFST, 30, 160 3300 SYS PLOT, SIN(0)*15, COS(0)*10, 3 3310 FORX=.3 TO (null)*2+.3STEP.3 3320 SYS LINE, SIN(X)*15, COS(X)*10, 3 3330 NEXT 3339 REM FILL CIRCLE 3340 SYS PENC, 0, 7, 5, 5 3350 SYS OFST, 0, 0 3360 SYS FILL, 30, 160, 2 3370 SYS PENC, 6, 7, 5, 3 3379 REM FILL OUTER AREA (I HAD TO DO SOME HEDGING HERE) 3380 FORX=15TO155STEP20:SYS FILL, X, 39, 1:NEXT:SYS FILL, 1, 1, 1 3389 REM FILL INNER AREA WITH PEN 0 3390 SYS FILL, 100, 80, 0 3399 REM END ROUTINE. FLASH UNTIL KEYPRESS 3400 POKE53281,RND(1)*16:GETZ$:IFZ$=""THEN3400 3410 PRINT"[147]":SYS MODE, 0 3420 RETURN 3998 ::::::::::::::::::::::::::::::: 3999 REM POLYGON NUTS 4000 SYS OP, 224, 204 4004 REM FLIP LETS YOU PRESS SHIFT/CONTROL/F1 TO FLIP BETWEEN SCREENS 4005 SYS FLIP,1 4009 REM SWITCH TO MULTI-COLOR/ CLEAR 4010 SYS MODE, 7 4019 REM SET PEN COLORS 4020 SYS PENC, 0, 1, 7, 10 4029 REM DEFINE EDGES OF AREA AND DRAW A BOX AROUND IT 4030 LE=50:RI=110:TP=50:BT=150 4031 SYS PLOT,49,49,1:SYSLINE,111,49,1:SYSLINE,111,151,1 4032 SYSLINE,49,151,1:SYSLINE,49,49,1 4033 REM DEFINE DELTAS FOR EACH VERTEX 4034 DX(0)=-2:DY(0)=1 4035 DX(1)=1:DY(1)=-2 4036 DX(2)=-1:DY(2)=-1 4037 DX(3)=2:DY(3)=2 4039 REM SET VERTICES AT 100 4040 FORX=0TO3 4050 PX(X,0)=100 4060 PY(X,0)=100 4065 NEXT 4099 REM SQ IS LAG TIME. Q IS CURRENT PLOT. OQ IS LAST PLOT. RQ IS ERASED 4100 SQ=7:OQ=Q:Q=(Q+1)ANDSQ:RQ=(Q-SQ)ANDSQ:FORX=0TO3 4109 REM CALCULATE NEW COORDINATES 4110 PX(X,Q)=PX(X,OQ)+DX(X) 4120 PY(X,Q)=PY(X,OQ)+DY(X) 4129 REM CHECK IF IN AREA 4130 IF(PX(X,Q)RITHENDX(X)=-DX(X):PX(X,Q)=RI:GOTO4200 4140 IFPY(X,Q)BTTHENDY(X)=-DY(X):PY(X,Q)=BT:GOTO4200 4200 NEXT 4209 REM PLOT AND LINE VERTICES 4210 SYS PLOT,PX(0,Q),PY(0,Q) ,1 4220 SYS LINE,PX(1,Q),PY(1,Q) ,2 4230 SYS LINE,PX(2,Q),PY(2,Q) ,3 4240 SYS LINE,PX(3,Q),PY(3,Q) ,2 4250 SYS LINE,PX(0,Q),PY(0,Q) ,1 4260 SYS PLOT,PX(0,RQ),PY(0,RQ),0 4270 SYS LINE,PX(1,RQ),PY(1,RQ),0 4280 SYS LINE,PX(2,RQ),PY(2,RQ),0 4290 SYS LINE,PX(3,RQ),PY(3,RQ),0 4300 SYS LINE,PX(0,RQ),PY(0,RQ),0 4309 REM IF KEY NOT PRESSED, DO AGAIN 4310 GETZ$:IFZ$=""THEN4100 4320 PRINT"[147]":SYS MODE, 0:SYSFLIP,0 4330 RETURN 4998 ::::::::::::::::::::::::::::::::: 4999 REM LIST PROGRAM 5000 PRINT"[147]":LIST 19998 ::::::::::::::::::::::::::::::::: 19999 END:REM 20000- WINDOW DRAWER 20000 WD=0:FORI=1TOM:IFWDWD/2THENWD=WD+1 20015 XX=X 20020 IFX<0THENXX=INT(20-WD/2) 20030 SYSSHADE,XX+1,XX+WD+1,Y+1,Y+M+1+1 20040 SYSBOX,XX,XX+WD,Y,Y+M+1,160,C 20050 POKE646,C:PRINT"";:FORI=1TOM 20060 IFX<0THENSYSCT,Y+I,M$(I):GOTO20070 20065 SYSPA,XX+2,Y+I,M$(I) 20070 NEXT:RETURN 40000 FORI=0TO21:POKE828+I,8+I:NEXT 40010 IFDV<8ORDV>29ORDV=8THEN40030 40020 A=PEEK(828):B=PEEK(828+DV-8):POKE828,B:POKE828+DV-8,A 40030 A$="HELLO CONNECT":FORJ=8TO29:I=PEEK(828+J-8):IFI=14THENNEXT 40040 CLOSE2:OPEN2,I,2:CLOSE2:IFSTTHEN40060 40050 CLOSE15:OPEN15,I,15,"R0:"+A$+"="+A$:INPUT#15,ER:CLOSE15:IFER=63THEN40070 40060 NEXT:PRINT"[147]":POKE53272,23:POKE186,8:POKE2048,0:POKE44,8:POKE43,1:END 40070 Q$=CHR$(34):POKE646,PEEK(53281):PRINT"[147]":POKE53272,23 40080 PRINT"[147]P[207]2048,0:P[207]44,8:P[207]43,1:P[207]56,160:P[207]55,0:CLR:L[207]"Q$A$Q$","I 40090 PRINT"RUN:":POKE631,13:POKE632,13:POKE198,2:END 59999 END 60000 OPEN15,8,15,"S0:GRAFSTAR DEMO":CLOSE15:SAVE"0:GRAFSTAR DEMO",8 60999 END 61000 POKE53280,0:POKE53265,11:POKE53281,0:PRINT"[147]":POKE53265,27 61001 POKE56,160:POKE55,0:CLR:C$="[147]"+CHR$(34):D$=CHR$(34)+",":GOTO40000 61010 CLOSE15:OPEN15,I,15,"R0:"+A$+"="+A$:INPUT#15,ER:CLOSE15:IFER=63THEN61030